package org.jeecg.modules.zhoupackage.pojo;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 团订订单表
 *
 * @author zxl
 * @since 20201008
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
public class MlccTeamOrderInfo {

    /**
     * 主键id
     */
    @TableId(type = IdType.AUTO)
    private Integer id;

    /**
     * 订单编号
     */
    @Excel(name = "订单编号")
    private String orderSn;

    /**
     * 订单名称
     */
    @Excel(name = "订单名称")
    private String orderName;

    /**
     * 用户id
     */
    private String userId;

    /**
     * 门店编码
     */
    private String storeCode;

    /**
     * 门店ID
     */
    private String storeId;

    /**
     * 0支付宝，1微信，2银联，3代付，4余额，5月结
     */
    private Integer applyType;

    /**
     * 订单金额
     */
    @Excel(name = "订单金额")
    private String orderMoney;

    /**
     * 拒绝原因
     */
    private String refusedReason;

    /**
     * 订单状态：-1假删除，0草稿订单，11未付款，1已支付，2已提交，3已接单，4等待面料，5裁剪，6缝制，7发货，8订单完成
     */
    private Integer status;

    /**
     * 面料来源
     */
    private String fabricSource;

    /**
     * 业务来源
     */
    private String businessSource;

    /**
     * 快递id
     */
    private String courierId;

    /**
     * 快递名称
     */
    private String courierName;

    /**
     * 包装方式
     */
    private String packageType;

    /**
     * 地址类型
     */
    private String addressType;

    /**
     * 收获地址
     */
    private String address;

    /**
     * 第三方订单号
     */
    private String thirdSn;

    /**
     * 式样
     */
    private String shiyang;

    /**
     * 打款样式
     */
    private String modifiedYang;

    /**
     * 紧急指数
     */
    private String emergency;

    /**
     * 品牌标
     */
    private String brandLabel;

    /**
     * 单价
     */
    private BigDecimal unitPrice;

    /**
     * 备注
     */
    private String remark;

    /**
     * 创建人
     */
    private String createBy;

    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /**
     * 支付时间
     */
    @TableField(exist = false)
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date payTime;

    /**
     * 更新人员
     */
    private String updateBy;

    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    /**
     * 部门编码
     */
    private String sysOrgCode;

    /**
     * 产品IDS
     */
    @TableField(exist = false)
    private String productIds;

    /**
     * 增加的部门ids（用不到，可以根据客户id查询）
     */
    @TableField(exist = false)
    private String departIds;

    /**
     * 客户id（在这里是公司身份）
     */
    private String customerId;

    /**
     * 部门列表(里面用来存放产品)
     */
    @TableField(exist = false)
    private List<MlccCustomerDepart> departs;

    /**
     * 部门列表(里面用来存放员工)
     */
    @TableField(exist = false)
    private List<MlccCustomerDepart> empdeparts;

    /**
     * 所有面料列表
     */
    @TableField(exist = false)
    private List<MlccFabricInfo> fabricInfoList;

    /**
     * 订单中所有面料的价格
     */
    @TableField(exist = false)
    private double fabricPriceAll;

    /**
     * 加工费用
     */
    @TableField(exist = false)
    private List<MlccProductInfo> jiagongPro;

    /**
     * 现货费用
     */
    @TableField(exist = false)
    private List<MlccProductInfo> xianhuoPro;

    /**
     * 加工总价
     */
    @TableField(exist = false)
    private double jiagongPrice;

    /**
     * 现货总价
     */
    @TableField(exist = false)
    private double xianhuoPrice;

    /**
     * 客户名称
     */
    @TableField(exist = false)
    private String customerName;

    /**
     * 客户编码
     */
    @TableField(exist = false)
    private String customerCode;

    /**
     * 改价金额
     */
    private String pricing;

    /**
     * 订单下所有面料，不包括客户面料
     */
    @TableField(exist = false)
    private List<MlccFabricInfo> allFabric;

    /**
     * 订单下所有客户面料
     */
    @TableField(exist = false)
    private List<MlccFabricInfo> keFabric;

    /**
     * 订单下所有产品
     */
    @TableField(exist = false)
    private List<MlccProductInfo> allPro;

    /**
     * 订单下所有产品价格（加工费用小计）
     */
    @TableField(exist = false)
    private double proPriceAall;

    /**
     * 客户基本信息
     */
    @TableField(exist = false)
    private MlccCustomerInfo customerInfo;

    // 三个支付金额
    /**
     * 抵扣额度支付金额
     */
    private BigDecimal deductionPay;

    /**
     * 月结支付的金额
     */
    private BigDecimal monthPay;

    /**
     * 余额支付的金额
     */
    private BigDecimal balancePay;

    /**
     * 调价前金额
     */
    private BigDecimal priorPrice;

    /**
     * 原始价，没有调价之前的价格
     */
    private BigDecimal firstPrice;

    /**
     * 真·客户名称
     */
    @TableField(exist = false)
    private String companyName;
    /**
     * 真·客户编号
     */
    @TableField(exist = false)
    private String companyCode;

    /**
     * 下单门店
     */
    @TableField(exist = false)
    private String storeName;

    /**
     * 下单员工
     */
    @TableField(exist = false)
    private String empName;

    @TableField(exist = false)
    private String empPhone;
}
